home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 3 / ct-rom iiib.zip / ct-rom iiib / WINDOWS / UTILITY / DIVERSEN / DESK300 / BACKDESK.MST < prev    next >
Text File  |  1994-03-01  |  10KB  |  341 lines

  1. '**************************************************************************
  2. '*                       Microcosm Setup Program
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST ASKQUIT       = 200
  13. CONST DESTPATH      = 300
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST OPTIONS       = 800
  18. CONST APPHELP       = 900
  19. CONST BADPATH       = 6400
  20. CONST RESTART       = 1100
  21. CONST MAKESHELL        = 7900
  22. CONST PROBSYS       = 8000
  23. CONST SYSMENU       = 8100
  24. CONST SHELLRESTART  = 8200
  25.  
  26. ''Bitmap ID
  27. CONST LOGO = 1
  28.  
  29. GLOBAL DEST$        ''Default destination directory.
  30. GLOBAL WINDRIVE$    ''Windows drive letter.
  31. GLOBAL szWinDir$    ''Windows directory.
  32. GLOBAL szWinSysDir$ ''Windows system directory
  33. GLOBAL szDirTmp$    ''Temporary directory.
  34. GLOBAL szIniDir$
  35. GLOBAL szIniEntry$
  36. GLOBAL szAutoDir$
  37. GLOBAL CUIDLL$
  38. GLOBAL szOut$
  39. GLOBAL IsShell%
  40.  
  41. DECLARE SUB Install
  42. DECLARE SUB AskQuitInstall
  43.  
  44. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  45. DECLARE FUNCTION GetPrivateProfileString LIB "kernel" (szSect$, szKey$, szDefault$,szBuf$, cbBuf%, szIni$) AS INTEGER
  46. DECLARE FUNCTION ExitWindows LIB "user" (p1&, p2%) AS INTEGER
  47.  
  48. INIT:
  49.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  50.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  51.  
  52.     SetBitmap CUIDLL$, LOGO
  53.     SetTitle "BackDesk Install Program"
  54.  
  55.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  56.     IF szInf$ = "" THEN
  57.         szInf$ = GetSymbolValue("STF_CWDDIR") + "Setup.INF"
  58.     END IF
  59.     ReadInfFile szInf$
  60.  
  61.     OPTCUR$ = "1"
  62.  
  63.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  64.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  65.     szWinDir$ = GetWindowsDir()
  66.     szWinSysDir$ = GetWindowsSysDir()
  67.     IF IsDriveValid(WinDrive$) = 0 THEN
  68.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  69.         GOTO QUIT
  70.     END IF
  71.     DEST$ = MakePath(szWinDir$,"BackDesk")
  72.  
  73. '' Check Windows Version
  74.     IF (GetWindowsMajorVersion() < 3) OR ((GetWindowsMajorVersion() = 3) AND (GetWindowsMinorVersion() < 1)) THEN
  75.         i% = DoMsgBox("BackDesk requires Windows V3.1 to run.","BackDesk Install",MB_OK+MB_ICONEXCLAMATION)
  76.     END IF
  77.  
  78. WELCOME:
  79.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  80.     IF sz$ = "CONTINUE" THEN
  81.         UIPop 1
  82.     ELSE
  83.         AskQuitInstall
  84.         GOTO WELCOME
  85.     END IF
  86.  
  87.  
  88. GETPATH:
  89.     SetSymbolValue "EditTextIn", DEST$
  90.     SetSymbolValue "EditFocus", "END"
  91. GETPATHL1:
  92.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  93.     DEST$ = GetSymbolValue("EditTextOut")
  94.  
  95.     IF sz$ = "CONTINUE" THEN
  96.         IF IsDirWritable(DEST$) = 0 THEN
  97.             GOSUB BADPATH
  98.             GOTO GETPATHL1
  99.         END IF
  100.         UIPop 1
  101.     ELSEIF sz$ = "REACTIVATE" THEN
  102.         GOTO GETPATHL1
  103.     ELSEIF sz$ = "BACK" THEN
  104.         UIPop 1
  105.         GOTO WELCOME
  106.     ELSE
  107.         AskQuitInstall
  108.         GOTO GETPATH
  109.     END IF
  110.  
  111.  
  112.     Install
  113.  
  114.  
  115. QUIT:
  116.     ON ERROR GOTO ERRQUIT
  117.  
  118.     IF ERR = 0 THEN
  119.         IF IsShell% = 1 THEN
  120.             dlg% = SHELLRESTART
  121.         ELSE
  122.             dlg% = EXITSUCCESS
  123.         END IF
  124.     ELSEIF ERR = STFQUIT THEN
  125.         dlg% = EXITQUIT
  126.     ELSE
  127.         dlg% = EXITFAILURE
  128.     END IF
  129.  
  130. QUITL1:
  131.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  132.     IF sz$ = "REACTIVATE" THEN
  133.         GOTO QUITL1
  134.     END IF
  135.     UIPop 1
  136.  
  137.     END
  138.  
  139. ERRQUIT:
  140.     i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  141.     END
  142.  
  143.  
  144.  
  145. BADPATH:
  146.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  147.     IF sz$ = "REACTIVATE" THEN
  148.         GOTO BADPATH
  149.     END IF
  150.     UIPop 1
  151.     RETURN
  152.  
  153.  
  154. ''AskQuitInstall was here
  155.  
  156.  
  157. '**
  158. '** Purpose:
  159. '**     Builds the copy list and performs all installation operations.
  160. '** Arguments:
  161. '**     none.
  162. '** Returns:
  163. '**     none.
  164. '*************************************************************************
  165. SUB Install STATIC
  166.  
  167.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  168.     CreateDir DEST$, cmoNone
  169.     SetRestartDir(DEST$)
  170.  
  171.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  172.     WriteToLogFile ""
  173.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  174.     WriteToLogFile ""
  175.     WriteToLogFile "May have had to create the directory: " + DEST$
  176.     WriteToLogFile ""
  177.  
  178.     AddSectionFilesToCopyList "BackDesk", SrcDir$, DEST$
  179.     AddSectionFilesToCopyList "BackDesk Tools", SrcDir$, DEST$
  180.     AddSectionFilesToCopyList "BackDrop Tools", SrcDir$, DEST$
  181.     IF IsDIRWritable(szWinSysDir$) = 0 THEN
  182.         MYSYSPROB:
  183.         sz$ = UIStartDlg(CUIDLL$, PROBSYS, "FInfoDlgProc", APPHELP, HELPPROC$)
  184.         IF sz$ = "CONTINUE" THEN
  185.                 UIPop 1
  186.             ELSE
  187.                 AskQuitInstall
  188.                 GOTO MYSYSPROB
  189.             END IF
  190.         AddSectionFilesToCopyList "Windows", SrcDir$, DEST$
  191.     ELSE
  192.         AddSectionFilesToCopyList "Windows", SrcDir$, szWinSysDir$
  193.  
  194.     END IF
  195.     CopyFilesInCopyList
  196.     CreateIniKeyValue "WIN.INI","Extensions","GRP",MakePath(DEST$,"popgroup.exe")+" ^.GRP",cmoOverwrite
  197.  
  198.     CreateProgmanGroup "BackDesk", "backdesk.grp", cmoNone
  199.     ShowProgmanGroup  "BackDesk", 1, cmoNone
  200. '
  201. ' Main programs
  202. '
  203.     CreateProgmanItem "BackDesk", "BackMenu V3.0",        MakePath(DEST$,"backmenu.exe"), "", cmoOverwrite
  204.     CreateProgmanItem "BackDesk", "BigDesk V3.0",        MakePath(DEST$,"bigdesk.exe"),    "", cmoOverwrite
  205.     CreateProgmanItem "BackDesk", "BackDesk 3.0 Help",    MakePath(DEST$,"backdesk.hlp"), "", cmoOverwrite
  206. '
  207. ' BackDesk Tools
  208. '
  209.     CreateProgmanItem "BackDesk", "WRUN Windows Server",    MakePath(DEST$,"wrunserv.exe")+" -hide", "", cmoOverwrite
  210. '
  211. ' BackDrop Tools
  212. '
  213.     CreateProgmanItem "BackDesk", "Copy Files Tool",        MakePath(DEST$,"copytool.exe"),    "", cmoOverwrite
  214.     CreateProgmanItem "BackDesk", "Drag/Drop Clipboard Tool",    MakePath(DEST$,"dropclip.exe"),    "", cmoOverwrite
  215.     CreateProgmanItem "BackDesk", "Remove Files/Aliases Tool",    MakePath(DEST$,"dustbin.exe"),    "", cmoOverwrite
  216.     CreateProgmanItem "BackDesk", "Task to Alias Tool",        MakePath(DEST$,"t2alias.exe"),    "", cmoOverwrite
  217.     CreateProgmanItem "BackDesk", "Wallpaper Changing Tool",    MakePath(DEST$,"wallpapr.exe"),    "", cmoOverwrite
  218. '
  219. ' Add some interesting aliases in (but only if there aren't any
  220. '
  221.     szOut$=""
  222.     for i%=1 to 256
  223.       szOut$=szout$+"*"
  224.     next
  225.     spserv$=MakePath(szWinDir$,"SP-SERV.INI")
  226.     i%=GetPrivateProfileString("ToolPlaces","Tool0","",szOut$,255,spserv$)
  227.     if i% = 0 THEN
  228.         CreateIniKeyValue spserv$,"ToolPlaces","Tool0","0,197,1,Notepad,"+MakePath(szWinDir$,"NOTEPAD.EXE")+",0,0,notepad.exe #", cmoOverwrite
  229.         CreateIniKeyValue spserv$,"ToolPlaces","Tool1","0,349,1,BackDesk 3.0 Help,winhelp.exe ,0,0,"+MakePath(DEST$,"BACKDESK.HLP")+" #", cmoOverwrite
  230.         CreateIniKeyValue spserv$,"ToolPlaces","Tool2","0,121,1,Control Panel,"+MakePath(szWinDir$,"CONTROL.EXE")+",0,0,CONTROL.EXE #", cmoOverwrite
  231.         CreateIniKeyValue spserv$,"ToolPlaces","Tool3","0,45,1,File Mangler,"+MakePath(szWinDir$,"WINFILE.EXE")+",0,0,{XPO=53 YPO=37 WID=580 HEI=434 NOR XDESK=0 YDESK=0 SIN TIT=""File Manager""}"+MakePath(szWinDir$,"WINFILE.EXE"), cmoOverwrite
  232.         CreateIniKeyValue spserv$,"ToolPlaces","Tool4","0,273,1,BackDesk goodies,"+MakePath(DEST$,"popgroup.exe")+",0,0,"+MakePath(szWinDir,"BACKDESK.GRP"), cmoOverwrite
  233.     END IF
  234. '
  235. ' Do you want BackDesk to enable system menu hooks or not
  236. '
  237.     szSysMenu$ = "0"
  238.     sz$ = UIStartDlg(CUIDLL$, SYSMENU, "FInfoDlgProc", APPHELP, HELPPROC$)
  239.     IF sz$ = "CONTINUE" THEN
  240.         szSysMenu$="1"
  241.     END IF
  242.     UIPop 1
  243.     CreateIniKeyValue spserv$,"BackDesk","EnableSystemMenuEntries",szSysMenu$, cmoOverwrite
  244. '
  245. ' Add in details of programs which don't like system hooks
  246. '
  247.     szDisable$="Disable System Menu Hook"
  248.     CreateIniKeyValue spserv$,szDisable$,"_LNOTES.EXE","1",cmoOverwrite
  249.     CreateIniKeyValue spserv$,szDisable$,"BMEDIT.EXE","1",cmoOverwrite
  250. '
  251. ' Use the default menu used if theres nothing defines
  252. '
  253.     szOut$=""
  254.     for i%=1 to 256
  255.       szOut$=szout$+"*"
  256.     next
  257.     i%=GetPrivateProfileString("Back-Menu","IniFile","",szOut$,255,spserv$)
  258.     IF i%=0 THEN
  259.         CreateIniKeyValue spserv$,"Back-Menu","IniFile",MakePath(DEST$,"BACKDESK.MNU"), cmoOverwrite
  260.     END IF
  261. '
  262. ' Make BackMenu the shell?
  263. '
  264.     IsShell%=0
  265.     szOut$=""
  266.     for i%=1 to 256
  267.       szOut$=szout$+"*"
  268.     next
  269.     i%=GetPrivateProfileString("boot","shell","",szOut$,255,"system.ini")
  270.     
  271.     IF (instr(UCase$(szOut$),"BACKMENU") = 0) AND (instr(UCase$(szOut$),"BDSHELL") = 0) THEN
  272.         sz$ = UIStartDlg(CUIDLL$, MAKESHELL, "FInfoDlgProc", APPHELP, HELPPROC$)
  273.         IF sz$ = "CONTINUE" THEN
  274.             CreateIniKeyValue MakePath(szWinDir$,"SYSTEM.INI"),"BOOT","SHELL",MakePath(DEST$,"BDSHELL.EXE"),cmoOverwrite
  275.             IsShell%=1
  276.         END IF
  277.         UIPop 1
  278.     ELSE
  279.         CreateIniKeyValue MakePath(szWinDir$,"SYSTEM.INI"),"BOOT","SHELL",MakePath(DEST$,"BDSHELL.EXE"),cmoOverwrite
  280.         IsShell%=1
  281.     END IF
  282. '
  283. ' Any system files to copy?
  284. '
  285.     IF RestartListEmpty() = 0 THEN
  286.     ASKRESTART:
  287.         sz$ = UIStartDlg(CUIDLL$, RESTART, "FInfoDlgProc", APPHELP, HELPPROC$)
  288.         IF sz$ = "CONTINUE" THEN
  289.             UIPop 1
  290.         ELSE
  291.             AskQuitInstall
  292.             GOTO ASKRESTART
  293.         END IF
  294.         i% = ExitExecRestart()
  295. '        i%=ExitWindows(66,66)
  296.     END IF
  297.  
  298.     CloseLogFile
  299.  
  300. END SUB
  301.  
  302. SUB AskQuitInstall STATIC
  303.  
  304. LAskQuitInstall:
  305.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  306.  
  307.     IF sz$ = "EXIT" THEN
  308.         UIPopAll
  309.         ERROR STFQUIT
  310.     ELSEIF sz$ = "REACTIVATE" THEN
  311.         GOTO LAskQuitInstall
  312.     ELSE
  313.         UIPop 1
  314.     END IF
  315. END SUB
  316.  
  317.  
  318.  
  319. '**
  320. '** Purpose:
  321. '**     Appends a file name to the end of a directory path,
  322. '**     inserting a backslash character as needed.
  323. '** Arguments:
  324. '**     szDir$  - full directory path (with optional ending "\")
  325. '**     szFile$ - filename to append to directory
  326. '** Returns:
  327. '**     Resulting fully qualified path name.
  328. '*************************************************************************
  329. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  330.     IF szDir$ = "" THEN
  331.         MakePath = szFile$
  332.     ELSEIF szFile$ = "" THEN
  333.         MakePath = szDir$
  334.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  335.         MakePath = szDir$ + szFile$
  336.     ELSE
  337.         MakePath = szDir$ + "\" + szFile$
  338.     END IF
  339. END FUNCTION
  340.  
  341.